home *** CD-ROM | disk | FTP | other *** search
-
- SETBUF(3) UNIX Programmer's Manual SETBUF(3)
-
- NNAAMMEE
- sseettbbuuff, sseettbbuuffffeerr, sseettlliinneebbuuff, sseettvvbbuuff - stream buffering operations
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssttddiioo..hh>>
-
- _v_o_i_d
- sseettbbuuff(_F_I_L_E _*_s_t_r_e_a_m, _c_h_a_r _*_b_u_f)
-
- _v_o_i_d
- sseettbbuuffffeerr(_F_I_L_E _*_s_t_r_e_a_m, _c_h_a_r _*_b_u_f, _s_i_z_e___t _s_i_z_e)
-
- _i_n_t
- sseettlliinneebbuuff(_F_I_L_E _*_s_t_r_e_a_m)
-
- _i_n_t
- sseettvvbbuuff(_F_I_L_E _*_s_t_r_e_a_m, _c_h_a_r _*_b_u_f, _i_n_t _m_o_d_e, _s_i_z_e___t _s_i_z_e)
-
- DDEESSCCRRIIPPTTIIOONN
- The three types of buffering available are unbuffered, block buffered,
- and line buffered. When an output stream is unbuffered, information ap-
- pears on the destination file or terminal as soon as written; when it is
- block buffered many characters are saved up and written as a block; when
- it is line buffered characters are saved up until a newline is output or
- input is read from any stream attached to a terminal device (typically
- stdin). The function fflush(3) may be used to force the block out early.
- (See fclose(3).)
-
- Normally all files are block buffered. When the first I/O operation oc-
- curs on a file, malloc(3) is called, and an optimally-sized buffer is ob-
- tained. If a stream refers to a terminal (as _s_t_d_o_u_t normally does) it is
- line buffered. The standard error stream _s_t_d_e_r_r is always unbuffered.
-
- The sseettvvbbuuff() function may be used to alter the buffering behavior of a
- stream. The _m_o_d_e parameter must be one of the following three macros:
-
- _IONBF unbuffered
-
- _IOLBF line buffered
-
- _IOFBF fully buffered
-
- The _s_i_z_e parameter may be given as zero to obtain deferred optimal-size
- buffer allocation as usual. If it is not zero, then except for un-
- buffered files, the _b_u_f argument should point to a buffer at least _s_i_z_e
- bytes long; this buffer will be used instead of the current buffer. (If
- the _s_i_z_e argument is not zero but _b_u_f is NULL, a buffer of the given size
- will be allocated immediately, and released on close. This is an exten-
- sion to ANSI C; portable code should use a size of 0 with any NULL
- buffer.)
-
- The sseettvvbbuuff() function may be used at any time, but may have peculiar
- side effects (such as discarding input or flushing output) if the stream
- is ``active''. Portable applications should call it only once on any
- given stream, and before any I/O is performed.
-
- The other three calls are, in effect, simply aliases for calls to
- sseettvvbbuuff(). Except for the lack of a return value, the sseettbbuuff() function
- is exactly equivalent to the call
-
- setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
-
-
- The sseettbbuuffffeerr() function is the same, except that the size of the buffer
- is up to the caller, rather than being determined by the default BUFSIZ.
- The sseettlliinneebbuuff() function is exactly equivalent to the call:
-
- setvbuf(stream, (char *)NULL, _IOLBF, 0);
-
- RREETTUURRNN VVAALLUUEESS
- The sseettvvbbuuff() function returns 0 on success, or EOF if the request cannot
- be honored (note that the stream is still functional in this case).
-
- The sseettlliinneebbuuff() function returns what the equivalent sseettvvbbuuff() would
- have returned.
-
- SSEEEE AALLSSOO
- fopen(3), fclose(3), fread(3), malloc(3), puts(3), printf(3)
-
- SSTTAANNDDAARRDDSS
- The sseettbbuuff() and sseettvvbbuuff() functions conform to ANSI C3.159-1989 (``ANSI
- C'').
-
- BBUUGGSS
- The sseettbbuuffffeerr() and sseettlliinneebbuuff() functions are not portable to versions
- of BSD UNIX before 4.2BSD. On 4.2BSD and 4.3BSD systems, sseettbbuuff() always
- uses a suboptimal buffer size and should be avoided.
-
- 4th Berkeley Distribution June 4, 1993 2
-